package com.zrrd.straw1.demo;

public class Demo1 {

    static {
        a = 200;
        System.out.println("静态块");
    }
    {
        System.out.println("执行了构造块");
        System.out.println("把相同的构建过程，统一到构造块当中，不受重载构造器的影响");
    }
    Demo1(){
        name = "ls";
    }
    Demo1(String name ){
        this.name = "王五";
    }
    {
        System.out.println("我还是一个构造块");
    }
    String name = "zs";
    void name(){
        System.out.println( "name()");
    }
    public static void main(String[] args) {
        Demo1 demo1 = new Demo1("h");
        System.out.println( demo1.name );
        System.out.println( Demo1.a );

    }
    //只要程序中使用到这个类型，
    //第1步： 加载类, 创建静态变量
    //第2步： 按静态块书写顺序赋值。执行静态块。
    //第3步： new 对象， 创建实例变量 name 创建了，初始化实例变量。zs
    //第4步： 执行构造块。
    //第5步： 执行构造方法。把 name变量中 zs 改成 ls 了。
    static{
        a = 500;
    }
    static int a = 100 ;


    // 作业：当有继承时，静态块，构造块，构造方法的执行顺序 ！
}
